package object5.library.user;

import object5.library.BookList;
import object5.library.operation.IOperation;

//所有用户的父类,派生出管理员和普通用户
//因为管理员和用户的部分功能是相同的,比如查找书籍列表,查看图书
public abstract class User {
    //User相当于所有用户的父类,系统在实际使用过程中,只能出现用户,管理员,而不会出现父类实例,
    // 为了避免父类实例被不小心创建出来,直接设为abstract
    //打印菜单时,各自打印各自的菜单,也不应该出现"父类菜单"这样的内容
    protected String name;
    //protected子类可以直接获取到,就不需要getter和setter方法了
    public abstract int menu();

    protected IOperation[] operations;//在父类中已经设定过了
    //借助操作对象,把书和用户这两个概念给关联起来了
    //不是让用户直接操作书,而是通过Operation进行关联,有利于代码的解耦合
    //后续修改用户和书的代码,互相没有影响

    public User(String name){
        this.name = name;
    }

    public void work(int choice, BookList bookList){
        if(choice < 0 || choice > operations.length - 1){
            System.out.println("输入的选项非法");
            return;
        }
        operations[choice].work(bookList);
    }


}
